CREATE TABLE VESTI_V2_TAM_ORDEM ( TAMANHO VARCHAR(5) NOT NULL, ORDEM INTEGER NOT NULL, CONSTRAINT VESTI_V2_TAM_ORDEM_PK PRIMARY KEY (TAMANHO) ); CREATE TABLE VESTI_V2_OUT_COLOR ( NUMERO INTEGER NOT NULL, COD_COR VARCHAR(15) NOT NULL, DESCRICAO VARCHAR(30) NOT NULL, CONSTRAINT VESTI_V2_OUT_COLOR_PK PRIMARY KEY (NUMERO) ); CREATE TABLE VESTI_V2_OUT_SIZE ( TAMANHO VARCHAR(5) NOT NULL ); CREATE TABLE VESTI_V2_CATEGORIAS ( ID VARCHAR(50) NOT NULL, DESCRICAO VARCHAR(50) NOT NULL, PARENT VARCHAR(50), CONSTRAINT VESTI_V2_CATEGORIAS_PK PRIMARY KEY (ID) ); CREATE TABLE VESTI_V2_CATEGORIAS_REF ( ID VARCHAR(50) NOT NULL, CODIGO INTEGER NOT NULL, CONSTRAINT VESTI_V2_CATEGORIAS_REF_PK PRIMARY KEY (ID,CODIGO) ); CREATE TABLE VESTI_V2_PRODUTOS_LIBERADOS ( CODIGO VARCHAR(14) NOT NULL, DATA_HORA_ENVIO DATE, DATA_HORA_FOTO DATE, DATA_HORA_TIMER DATE, CONSTRAINT VESTI_V2_PRODUTOS_LIBERADOS_PK PRIMARY KEY (CODIGO) ); CREATE TABLE VESTI_V2_PEDIDOS ( CLIENTE_NUM INTEGER, NUMERO INTEGER NOT NULL, CLIENTE_COMPL VARCHAR(20), CLIENTE_BAIRRO VARCHAR(40), DATA_INC DATE NOT NULL, DATA_ALT DATE NOT NULL, VALOR NUMERIC(15,2) NOT NULL, ID_PEDIDO VARCHAR(128) NOT NULL, ID_CLIENTE VARCHAR(128) NOT NULL, ID_VENDEDOR VARCHAR(254) NOT NULL, STATUS INTEGER NOT NULL, CLIENTE_NOME VARCHAR(50), CLIENTE_DOC VARCHAR(20), CLIENTE_FONE VARCHAR(30), CLIENTE_EMAIL VARCHAR(254), CLIENTE_ENDERECO VARCHAR(50), CLIENTE_CEP VARCHAR(9), CLIENTE_CIDADE VARCHAR(40), CLIENTE_UF VARCHAR(2), VENDEDOR_NOME VARCHAR(50), COMPLETO VARCHAR(1), NUMERO_SYNTECH INTEGER, DATA_SYNTECH DATE, OBS VARCHAR(500), CONSTRAINT VESTI_V2_PEDIDOS_PK PRIMARY KEY (NUMERO) ); CREATE TABLE VESTI_V2_PEDIDO_ITENS ( NUMERO INTEGER NOT NULL, COD_PROD VARCHAR(14) NOT NULL, TAMANHO VARCHAR(3) NOT NULL, COR_DESCR VARCHAR(30) NOT NULL, QUANTIDADE INTEGER NOT NULL, PRECO NUMERIC(15,2) NOT NULL, COR_SYNTECH INTEGER, TAM_SYNTECH VARCHAR(3), DESCRICAO VARCHAR(50), CONSTRAINT VESTI_V2_PEDIDO_ITENS_PK PRIMARY KEY (NUMERO,COD_PROD,TAMANHO,COR_DESCR) ); ALTER TABLE VESTI_V2_CATEGORIAS_REF ADD CONSTRAINT CDVESTGRPV2 FOREIGN KEY (CODIGO) REFERENCES SUB_GRUPO(CODIGO) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE VESTI_V2_PRODUTOS_LIBERADOS ADD CONSTRAINT FKLIBGPRODV2 FOREIGN KEY (CODIGO) REFERENCES PRODUTOS(CODIGO) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE VESTI_V2_PEDIDO_ITENS ADD CONSTRAINT FKVESTIPEDITV2 FOREIGN KEY (NUMERO) REFERENCES VESTI_V2_PEDIDOS(NUMERO) ON UPDATE CASCADE ON DELETE CASCADE; COMMIT WORK; SET TERM ^ ; /* Procedure: VESTI_V2_UPA */ CREATE OR ALTER PROCEDURE VESTI_V2_UPA(TEXTO VARCHAR(500)) RETURNS (RETORNO VARCHAR(500)) AS declare variable VL_ASCII INTEGER; declare variable ILOOP INTEGER; begin RETORNO = ''; ILOOP=1; WHILE (ILOOP <= CHAR_LENGTH(:TEXTO)) DO BEGIN VL_ASCII = ASCII_VAL(SUBSTRING(:TEXTO FROM :ILOOP FOR 1)); IF ((:VL_ASCII BETWEEN 192 AND 196)OR(:VL_ASCII BETWEEN -64 AND -60)) THEN VL_ASCII = 65; IF ((:VL_ASCII = 199)OR(:VL_ASCII = -57)) THEN VL_ASCII = 67; IF ((:VL_ASCII BETWEEN 200 AND 203)OR(:VL_ASCII BETWEEN -56 AND -53)) THEN VL_ASCII = 69; IF ((:VL_ASCII BETWEEN 204 AND 207)OR(:VL_ASCII BETWEEN -52 AND -49)) THEN VL_ASCII = 73; IF ((:VL_ASCII = 209)OR(:VL_ASCII = -47)) THEN VL_ASCII = 78; IF ((:VL_ASCII BETWEEN 210 AND 214)OR(:VL_ASCII BETWEEN -46 AND -42)) THEN VL_ASCII = 79; IF ((:VL_ASCII BETWEEN 217 AND 220)OR(:VL_ASCII BETWEEN -39 AND -36)) THEN VL_ASCII = 85; IF ((:VL_ASCII BETWEEN 224 AND 228)OR(:VL_ASCII BETWEEN -32 AND -28)) THEN VL_ASCII = 97; IF ((:VL_ASCII = 231)OR(:VL_ASCII = -25)) THEN VL_ASCII = 99; IF ((:VL_ASCII BETWEEN 232 AND 235)OR(:VL_ASCII BETWEEN -24 AND -21)) THEN VL_ASCII = 101; IF ((:VL_ASCII BETWEEN 236 AND 239)OR(:VL_ASCII BETWEEN -20 AND -17)) THEN VL_ASCII = 105; IF ((:VL_ASCII = 241)OR(:VL_ASCII = -15)) THEN VL_ASCII = 110; IF ((:VL_ASCII BETWEEN 242 AND 246)OR(:VL_ASCII BETWEEN -14 AND -10)) THEN VL_ASCII = 111; IF ((:VL_ASCII BETWEEN 249 AND 252)OR(:VL_ASCII BETWEEN -7 AND -4)) THEN VL_ASCII = 117; RETORNO = :RETORNO || ASCII_CHAR(:VL_ASCII); ILOOP = :ILOOP + 1; END RETORNO = UPPER(RETORNO); SUSPEND; end ^ /* Procedure: VESTI_V2_SEPARA */ CREATE OR ALTER PROCEDURE VESTI_V2_SEPARA(IN_LISTA VARCHAR(254)) RETURNS (OUT_STR VARCHAR(254)) AS declare variable var_pos integer; declare variable var_next_pos integer; declare variable var_length integer; declare variable var1 integer; declare variable var2 integer; begin var_length = char_length(:in_lista); var_pos = 1; while (var_pos <= var_length) do begin var1 = position(' ',:in_lista,:var_pos); var2 = position('/',:in_lista,:var_pos); if ((var2=0)and(var1>0)) then begin var_next_pos = var1; end else if ((var1=0)and(var2>0)) then begin var_next_pos = var2; end else if ((var1>0)and(var2>0)) then begin if (var2'')and(out_str<>' ')) then begin suspend; end var_pos = var_next_pos+1; end end ^ /* Procedure: VESTI_V2_SOMA */ CREATE OR ALTER PROCEDURE VESTI_V2_SOMA(NUM INTEGER) RETURNS (ITENS INTEGER,QUANT INTEGER,TOT NUMERIC(15,2),ERRO_T VARCHAR(1),ERRO_C VARCHAR(1)) AS declare variable CT INTEGER; begin SELECT COUNT(*) CT, SUM(A.QUANTIDADE), SUM(A.QUANTIDADE*A.PRECO) FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:NUM INTO :ITENS, :QUANT, :TOT; SELECT COUNT(*) CT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:NUM AND A.TAMANHO NOT IN (SELECT B.TAMANHO FROM TAMANHO_PROD B WHERE B.COD_PROD=A.COD_PROD) INTO :CT; IF (CT>0) THEN BEGIN ERRO_T='S'; END ELSE BEGIN ERRO_T='N'; END SELECT COUNT(*) CT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:NUM AND A.COR_SYNTECH IS NULL INTO :CT; IF (CT>0) THEN BEGIN ERRO_C='S'; END ELSE BEGIN ERRO_C='N'; END SUSPEND; end ^ /* Procedure: VESTI_V2_COR */ CREATE OR ALTER PROCEDURE VESTI_V2_COR(PROD VARCHAR(14),NMCOR VARCHAR(30)) RETURNS (COR INTEGER) AS declare variable I INTEGER; declare variable S VARCHAR(30); declare variable S2 VARCHAR(30); begin SELECT TRIM(RETORNO) FROM VESTI_V2_UPA(:NMCOR) INTO :S; SELECT FIRST 1 B.NUMERO FROM CORES_PROD A INNER JOIN CORES B ON B.NUMERO=A.COD_COR WHERE A.COD_PROD=:PROD AND B.NOME LIKE '%' || :S || '%' INTO :I; IF (I IS NOT NULL) THEN BEGIN COR=I; SUSPEND; END ELSE BEGIN FOR SELECT OUT_STR FROM VESTI_V2_SEPARA(:S) INTO :S2 DO BEGIN IF (I IS NULL) THEN BEGIN SELECT FIRST 1 B.NUMERO FROM CORES_PROD A INNER JOIN CORES B ON B.NUMERO=A.COD_COR WHERE A.COD_PROD=:PROD AND B.NOME LIKE '%' || :S2 || '%' INTO :I; IF (I IS NOT NULL) THEN BEGIN COR=I; SUSPEND; END END END END end ^ /* Procedure: VESTI_V2_GRADE_PED */ CREATE OR ALTER PROCEDURE VESTI_V2_GRADE_PED(PED INTEGER) RETURNS (COD_PROD VARCHAR(14),COR_DESCR VARCHAR(30),TIT_1 VARCHAR(5),TIT_2 VARCHAR(5),TIT_3 VARCHAR(5),TIT_4 VARCHAR(5),TIT_5 VARCHAR(5),TIT_6 VARCHAR(5),TIT_7 VARCHAR(5),TIT_8 VARCHAR(5),TAM_1 INTEGER,TAM_2 INTEGER,TAM_3 INTEGER,TAM_4 INTEGER,TAM_5 INTEGER,TAM_6 INTEGER,TAM_7 INTEGER,TAM_8 INTEGER) AS declare variable AUX_TAM VARCHAR(5); declare variable AUX_ORD INTEGER; declare variable I INTEGER; begin FOR SELECT DISTINCT A.COD_PROD FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED ORDER BY A.COD_PROD INTO :COD_PROD DO BEGIN I=0; TIT_1=NULL; TAM_1=NULL; TIT_2=NULL; TAM_2=NULL; TIT_3=NULL; TAM_3=NULL; TIT_4=NULL; TAM_4=NULL; TIT_5=NULL; TAM_5=NULL; TIT_6=NULL; TAM_6=NULL; TIT_7=NULL; TAM_7=NULL; TIT_8=NULL; TAM_8=NULL; FOR SELECT FIRST 8 DISTINCT A.TAMANHO, B.ORDEM FROM VESTI_V2_PEDIDO_ITENS A LEFT JOIN VESTI_V2_TAM_ORDEM B ON B.TAMANHO=A.TAMANHO WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD ORDER BY B.ORDEM INTO :AUX_TAM, :AUX_ORD DO BEGIN I=I+1; IF (I=1) THEN BEGIN TIT_1=AUX_TAM; END ELSE IF (I=2) THEN BEGIN TIT_2=AUX_TAM; END ELSE IF (I=3) THEN BEGIN TIT_3=AUX_TAM; END ELSE IF (I=4) THEN BEGIN TIT_4=AUX_TAM; END ELSE IF (I=5) THEN BEGIN TIT_5=AUX_TAM; END ELSE IF (I=6) THEN BEGIN TIT_6=AUX_TAM; END ELSE IF (I=7) THEN BEGIN TIT_7=AUX_TAM; END ELSE IF (I=8) THEN BEGIN TIT_8=AUX_TAM; END END FOR SELECT DISTINCT A.COR_DESCR FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD ORDER BY A.COR_DESCR INTO :COR_DESCR DO BEGIN IF (TIT_1 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_1 INTO :TAM_1; IF (TAM_1 IS NULL) THEN TAM_1=0; END ELSE BEGIN TAM_1=NULL; END IF (TIT_2 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_2 INTO :TAM_2; IF (TAM_2 IS NULL) THEN TAM_2=0; END ELSE BEGIN TAM_2=NULL; END IF (TIT_3 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_3 INTO :TAM_3; IF (TAM_3 IS NULL) THEN TAM_3=0; END ELSE BEGIN TAM_3=NULL; END IF (TIT_4 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_4 INTO :TAM_4; IF (TAM_4 IS NULL) THEN TAM_4=0; END ELSE BEGIN TAM_4=NULL; END IF (TIT_5 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_5 INTO :TAM_5; IF (TAM_5 IS NULL) THEN TAM_5=0; END ELSE BEGIN TAM_5=NULL; END IF (TIT_6 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_6 INTO :TAM_6; IF (TAM_6 IS NULL) THEN TAM_6=0; END ELSE BEGIN TAM_6=NULL; END IF (TIT_7 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_7 INTO :TAM_7; IF (TAM_7 IS NULL) THEN TAM_7=0; END ELSE BEGIN TAM_7=NULL; END IF (TIT_8 IS NOT NULL) THEN BEGIN SELECT SUM(QUANTIDADE) QUANT FROM VESTI_V2_PEDIDO_ITENS A WHERE A.NUMERO=:PED AND A.COD_PROD=:COD_PROD AND A.COR_DESCR=:COR_DESCR AND A.TAMANHO=:TIT_8 INTO :TAM_8; IF (TAM_8 IS NULL) THEN TAM_8=0; END ELSE BEGIN TAM_8=NULL; END SUSPEND; END END end ^ CREATE OR ALTER TRIGGER BI_VESTI_V2_PEDIDO_ITENS FOR VESTI_V2_PEDIDO_ITENS ACTIVE BEFORE INSERT POSITION 0 AS begin SELECT COR FROM VESTI_V2_COR(NEW.COD_PROD, NEW.COR_DESCR) INTO NEW.COR_SYNTECH; SELECT TAMANHO FROM TAMANHO_PROD WHERE COD_PROD=NEW.COD_PROD AND TAMANHO=NEW.TAMANHO INTO NEW.TAM_SYNTECH; end ^ CREATE TRIGGER VESTI_V2_ALTEROU_FOTO FOR PRODUTOS_FOTOS ACTIVE AFTER UPDATE POSITION 1 AS begin UPDATE VESTI_V2_PRODUTOS_LIBERADOS SET DATA_HORA_FOTO=CURRENT_TIMESTAMP WHERE CODIGO=NEW.COD_PROD; end ^ CREATE OR ALTER TRIGGER VESTI_V2_DELETOU_FOTO FOR PRODUTOS_FOTOS ACTIVE AFTER DELETE POSITION 1 AS begin UPDATE VESTI_V2_PRODUTOS_LIBERADOS SET DATA_HORA_FOTO=CURRENT_TIMESTAMP WHERE CODIGO=OLD.COD_PROD; end ^ CREATE OR ALTER TRIGGER VESTI_V2_INSERIU_FOTO FOR PRODUTOS_FOTOS ACTIVE AFTER INSERT POSITION 1 AS begin UPDATE VESTI_V2_PRODUTOS_LIBERADOS SET DATA_HORA_FOTO=CURRENT_TIMESTAMP WHERE CODIGO=NEW.COD_PROD; end ^ COMMIT WORK^ SET TERM ; ^ INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('PP',0); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('P',1); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('M',2); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('G',3); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('GG',4); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('XG',5); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('XGG',6); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('_',7); INSERT INTO VESTI_V2_TAM_ORDEM(TAMANHO,ORDEM) VALUES('U',8); COMMIT WORK; ALTER TABLE VESTI_V2_PRODUTOS_LIBERADOS add CATEGORIA_2 Varchar(50), add CATEGORIA_3 Varchar(50); SET TERM ^ ; CREATE TRIGGER BU_VESTI_V2_PRODUTOS_LIBERADOS FOR VESTI_V2_PRODUTOS_LIBERADOS ACTIVE BEFORE UPDATE POSITION 0 AS begin IF ((COALESCE(NEW.CATEGORIA_2,'')<>COALESCE(OLD.CATEGORIA_2,''))OR(COALESCE(NEW.CATEGORIA_3,'')<>COALESCE(OLD.CATEGORIA_3,''))) THEN BEGIN NEW.DATA_HORA_ENVIO = NULL; END end ^ SET TERM ; ^